// Copyright 2008 Senary
// See credits.txt for details.

// This file is part of Omega VII.

// Omega VII is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// Omega VII is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with Omega VII.  If not, see <http://www.gnu.org/licenses/>.

#pragma once

#include <string>

class SpaceObject;
struct ENTITY;

class Level
{
private:
	std::string _missionStatement;

	// copies the orbital target from the entity (loaded from a level)
	// to the object.
	void readOrbitalTarget(SpaceObject* so, ENTITY const* ent) const;

	// sets the player pointer for each loaded entity
	void readPlayer(SpaceObject* so, ENTITY const* ent) const;

public:
	Level(void);
	~Level(void);
	//property
	std::string const& getMissionStatement() const;
	//operations
	void initialize(std::string const& levelFilename);

	// Returns true if the game is over
	bool isGameOver();

	// Returns true if the human player won
	bool isVictory();
};
